package com.example.design.patterns.冰河.结构型模式.代理模式.proxy;

import com.example.design.patterns.冰河.结构型模式.代理模式.realSubject.MyObjectImpl;
import com.example.design.patterns.冰河.结构型模式.代理模式.subject.MyObject;

/**
 * proxy 保存一个引用使得代理可以访问实体。若RealSubject的接口相同，proxy会引用subject。提供一个与subject的接口相同的接口。
 * 这样代理就可以用来替代实体。控制对实体的存取，并可能负责创建和删除它。
 */
public class ProxyObject implements MyObject {
    MyObject obj;

    public ProxyObject() {
        System.out.println("这是代理类");
        this.obj = new MyObjectImpl();
    }

    @Override
    public void action() {
        System.out.println("代理开始");
        obj.action();
        System.out.println("代理结束");
    }
}
